package concurrencyCookBook.collection;

import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.LinkedBlockingDeque;
/**
 * 
 * @author jieji
 */
public class Demo {
	public static void main(String[] args) {
		t1();
	}
	public static void t2(){
		/**
		 * 线程阻塞
		 */
		LinkedBlockingDeque<String> links=new LinkedBlockingDeque<String>(2);
		/**
		 * add and offer基本没有区别,如果队列已经满了 则返回false，不报错
		 */
		links.add("a");
		links.offer("b");
		System.out.println(links);
		try {
			//如果队列已经满了,则等待有空间,线程阻塞
			links.put("b");
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void t1(){
		/**
		 * ConcurrentLinkedDeque(非阻塞,线程安全)
		 */
		ConcurrentLinkedDeque<String> cld=new ConcurrentLinkedDeque<String>();
		cld.add("a");
		cld.add("b");
		//如果没有元素会报错
		System.out.println(cld.getFirst());
		//如果没有元素会返回null
		System.out.println(cld.peekFirst());
		//移除首先加入的元素
		System.out.println(cld.remove());
	}
}
